package xiaomeng.com.xsngame;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;

public class Bird {
    /**
     * 绘制鸟
     */

    int x;
    int y;

    int width;
    int height;
    Bitmap brid;

    //初始索引
    int index;

    //重力加速度
    int g;
    //间隔时间
    double t;
    //初始速度 像素/秒
    double v0;
    //当前时刻的速度
    double vt;
    //运动的距离
    double h;


    public Bird(int x,int y){
        this.x=x;
        this.y=y;

        width= DataImage.xsn1.getWidth();
        height= DataImage.xsn1.getHeight();
    brid= DataImage.xsn()[0];
    index=0;

    g=4;
    t=0.25;
    v0=20;
    }


   public void paint(Canvas canvas, Paint paint){
        canvas.drawBitmap(brid,x,y,paint);
   }


  public  void move(){
      /**
       *  小鸟下落的抛物运动
       *  自由落体运动：

       1.初速度Vo=0

       2.末速度V=gt

       3.下落高度h=1/2gt²（从Vo位置向下计算）

       4.通算公式 v²=2gh

       5.推论Vt=2h
       */

      //初始速度
      double vt1=vt;
      //计算垂直上抛运动，经过时间t以后的速度
      double v=vt1-g*t;
     //v作为下一次计算位移的初始速度
      vt=v;
      //运行距离
      h=vt1 * t-0.5 * g * t * t;

       y=y-(int)h;

       //扇翅膀
        index++;
        brid= DataImage.xsn()[index/8%3];
  }


  //每次点击屏幕，小鸟重新获得初速度，向上飞，直到下一次点击之前，都作自由落体运动
  public  void flappy(){
       vt=v0;
  }

  //碰撞检测
  public  boolean hit(Column column1,Column column2,Ground ground){
        //检测是否碰撞顶部
        if (y<0){
            return true;
        }
        //是否碰撞底部
       if (y>MyApplication.height- DataImage.caodi.getHeight()){
           return true;
       }
       //碰撞水管
      //上
      int w=brid.getWidth();
      int h=brid.getHeight();

      if (CheckRectCollsion(x,y,w,h,column1.columX,column1.columYs,column1.width,column1.height)){
             return  true;
      }
      if (CheckRectCollsion(x,y,w,h,column1.columX,column1.columYx,column1.width,column1.height)){
          return  true;
      }
      if (CheckRectCollsion(x,y,w,h,column2.columX,column2.columYs,column2.width,column2.height)){
          return  true;
      }
      if (CheckRectCollsion(x,y,w,h,column2.columX,column2.columYx,column2.width,column2.height)){
          return  true;
      }

        return false;
  }

    public  boolean CheckRectCollsion(float x1, float y1, float w1, float h1, float x2, float y2,float w2, float h2) {
        if (x1 >= x2 && x1 >= x2 + w2) {
            return false;
        } else if (x1 <= x2 && x1 + w1 <= x2) {
            return false;
        } else if (y1 >= y2 && y1 >= y2 + h2) {
            return false;
        } else if (y1 <= y2 && y1 + h1 <= y2) {
            return false;
        }
        return true;
    }
  //判断是否通过管子
  public  boolean pass(Column column1,Column column2){
        return  column1.columX==x||column2.columX==x;
  }


}
